﻿#define _CRT_SECURE_NO_WARNINGS
//猜数字游戏
//种子不变，随机数不变

//rand会生成一个随机数,它的头文件是<stdlib.h>

//1.调用rand函数
#include <stdio.h>
#include <stdlib.h>
int main()
{
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;
}
//但是这种生成的随机数是有问题的，问题在于多次生成的随机数都是一样的，因此，rand直接生成的是伪随机数



//srand是初始化随机数生成器，可以让rand变成真正的随机数
//2.srand与rand配合
#include <stdio.h>
#include <stdlib.h>
int main()
{
	srand(1);//or srand(2)......
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;
}


//time-该函数可以作为一个随时都在变化的种子，用以获得随机数  它的头文件是<time.h>
//time会返回一个时间戳（将时间数字化之后，与计算机起始时间数字化的差值）\
//3.调用time函数


#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main()
{
	srand((unsigned int)time(NULL));//NULL是空指针，srand需要
	的类型必须是unsigned int,因此这里用上了强制类型转换
	//这里就是随机数种子的随机生成

	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;
}



//随机数的范围设置


//0~99：rand() % 100;
//0~100：rand()%100+1;
//0~200：100 + rand()%(200-100+1);
//通式 -- a~b:  a + rand()%(b-a+1);



//随机数游戏的实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game()
{
	int r = rand() % 100 + 1;
	int guess = 0;
	while (1)
	{
		printf("请猜数字>:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜⼩了\n");
		}
		else if (guess > r)
		{
			printf("猜⼤了\n");
		}
		else
		{
			printf("恭喜你，猜对了\n");
			break;
		}
	}
}
void menu()
{
	printf("***********************\n");
	printf("****** 1. play ******\n");
	printf("****** 0. exit ******\n");
	printf("***********************\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误，重新选择\n");
			break;
		}
	} while (input);
	return 0;
}